package com.tan.common.enums;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * 菜单类型枚举
 *
 * @author tan
 * @since 2025/4/21 9:36
 */
@AllArgsConstructor
@Getter
public enum MenuTypeEnum {
    /**
     *
     */
    NULL(0, null),
    MENU(1, "菜单"),
    CATALOG(2, "目录"),
    EXT_LINK(3, "外链"),
    BUTTON(4, "按钮");

    /**
     * Mybatis-Plus 提供注解表示插入数据库时插入该值
     */
    @EnumValue
    private final Integer value;

    /**
     * 表示对枚举序列化时返回此字段
     */
    @JsonValue
    private final String label;


    private static final Map<Integer, MenuTypeEnum> TYPES = new HashMap<>();

    static {
        for (MenuTypeEnum item : MenuTypeEnum.values()) {
            TYPES.put(item.getValue(), item);
        }
    }

    /**
     * @param type 类型
     * @return MenuTypeEnum
     */
    public static MenuTypeEnum parse(Integer type) {
        return TYPES.getOrDefault(type, null);
    }



    public boolean eq(Integer code) {
        return ObjectUtil.equals(code, this.value);
    }

}
